package com.ar.nanoapps.tuDelivery;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ResourceCursorAdapter;
import android.widget.TextView;

import com.dao.SqlLiteHelper;

public class Negocios extends Activity {
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
    	super.onCreate(savedInstanceState);
		setContentView(R.layout.negocios);
		
		String whereClause = null;
		
		//TOMO EL ID DE LA CATEGORIA SI ES Q LLEGO
        try{
			String idCategoria = getIntent().getExtras().getString("idCategoria");
	        if(idCategoria!=null){
	        	whereClause = "_id_categoria="+idCategoria;
	        }
        }catch(Exception e){}
	
		SqlLiteHelper sqlLiteHelper = new SqlLiteHelper(this);
		SQLiteDatabase db = sqlLiteHelper.getIntance();
		
        String[] columns = {"_id","nombre","direccion","telefono","horario"};
        
        Cursor c = db.query("negocio",columns,whereClause, null, null, null, null, null);
        startManagingCursor(c);
        
        // set this adapter as your ListActivity's adapter
		ListView listView = (ListView) findViewById(R.id.listaNegocios); 
		MyAdapter mListAdapter = new MyAdapter(Negocios.this,c);
		listView.setAdapter(mListAdapter);
		listView.setOnItemClickListener(new OnItemClickListener() {
		    public void onItemClick(AdapterView<?> arg0, View arg1, 
					int posicion,long id) {
		    	
		    	ListView listView = (ListView) findViewById(R.id.listaNegocios);
		    	
		    	//BUSCO LA POSICION DE LA LISTA DONDE TENGO QUE DESPLEGAR EL MENU
		    	for(int i=0;i<listView.getChildCount();i++){
		    		
		    		LinearLayout linearLayout = (LinearLayout) listView.getChildAt(i);
			    	LinearLayout linearLayoutFilaNegocio = (LinearLayout) linearLayout.getChildAt(0);
			    	LinearLayout menuAccienesNegocio = (LinearLayout) linearLayoutFilaNegocio.getChildAt(3);
			    	
			    	//Se actualiza la vista de los items 
		    		if(i!=posicion){
		    			menuAccienesNegocio.setVisibility(View.GONE);
		    			linearLayoutFilaNegocio.setBackgroundResource(R.drawable.background_fila);
		    			linearLayoutFilaNegocio.invalidate();
		    		}else{
		    			
				    	linearLayoutFilaNegocio.setBackgroundResource(R.drawable.background_fila_menu);
		    			menuAccienesNegocio.setVisibility(View.VISIBLE);
		    			linearLayoutFilaNegocio.invalidate();
		    			
				    	//BUSCO LOS DATOS DEL NEGOCIO CLICKEADO
				    	SqlLiteHelper sqlLiteHelper = new SqlLiteHelper(Negocios.this);
						SQLiteDatabase db = sqlLiteHelper.getIntance();

						String[] columns = { "_id", "nombre", "telefono"};
						String whereClause = "_id=" + id;
						Cursor c = db.query("negocio", columns, whereClause, null, null, null,
								null, null);
						startManagingCursor(c);
				    	
						String nombre = null;
						String telefono = null;
						if (c != null) {
							while (c.moveToNext()) {
								nombre = c.getString(1).toString();
								telefono = c.getString(2).toString();
							}
						}	
						
						//DATOS QUE USAN LOS BOTONES
						final String contactName = nombre;
				    	final String contactPhone = telefono;
						final String UriTelefono = "tel:"+telefono;
						final String idNegocio = ((Long)id).toString();
						
				    	//ACCION DE LLAMAR AL NEGOCIO
				    	Button botonLlamarNegocio = (Button) menuAccienesNegocio.getChildAt(0);
				    	botonLlamarNegocio.setOnClickListener(new View.OnClickListener() {
						    public void onClick(View view) {
						    	try{
						    		Intent callIntent = new Intent(Intent.ACTION_CALL);
						            callIntent.setData(Uri.parse(UriTelefono));
						            startActivity(callIntent);
						    	}catch(Exception e){}
						    }
				    	});    
				    	
				    	//ACCION DE LOCALIZAR AL NEGOCIO
				    	Button botonLocalizarNegocio = (Button) menuAccienesNegocio.getChildAt(1);
				    	botonLocalizarNegocio.setOnClickListener(new View.OnClickListener() {
						    public void onClick(View view) {
						    	try{
						    		Intent i = new Intent(Negocios.this,Mapa.class);
							    	startActivity(i);
						    	}catch(Exception e){}
						    }
				    	});
				    	
				    	//ACCION DE GUARDAR EL NEGOCIO EN CONTACTOS
				    	Button botonCrearContacto = (Button) menuAccienesNegocio.getChildAt(2);
				    	botonCrearContacto.setOnClickListener(new View.OnClickListener() {
						    public void onClick(View view) {
						    	//Instancio la pantalla para agregar el contacto
						    	Intent intent = new Intent(Intent.ACTION_INSERT);
						    	intent.setType(ContactsContract.Contacts.CONTENT_TYPE);

						    	// le paso los datos al formulario.
						    	intent.putExtra(ContactsContract.Intents.Insert.NAME, contactName);
						    	intent.putExtra(ContactsContract.Intents.Insert.PHONE, contactPhone);

						    	// Send with it a unique request code, so when you get called back, you can
						    	// check to make sure it is from the intent you launched (ideally should be
						    	// some public static final so receiver can check against it)
						    	int PICK_CONTACT = 100;
						    	startActivityForResult(intent, PICK_CONTACT);
						    }
				    	});    
				    	
				    	//ACCION DE DESPLEGAR LA PANTALLA DE DETALLES
				    	Button botonMostrarDetalles = (Button) menuAccienesNegocio.getChildAt(3);
				    	botonMostrarDetalles.setOnClickListener(new View.OnClickListener() {
						    public void onClick(View view) {
						    	try{
						    		Intent i = new Intent(Negocios.this,DetalleNegocio.class);
						    		i.putExtra("idNegocio",idNegocio);
							    	startActivity(i);
						    	}catch(Exception e){}
						    }
				    	});
				    	
		    		}
		    	}
			}
		});
		
		//BOTON VOLVER A LA PANTALLA ANTERIOR
        Button botonVolver = (Button) findViewById(R.id.btnVolverDeNegocios);
		botonVolver.setOnClickListener(new View.OnClickListener() {
		    public void onClick(View view) {
		    	
		    	//Si existe algun menu desplegado lo cierro
		    	ListView listView = (ListView) findViewById(R.id.listaNegocios);
		    	
		    	boolean cerroMenu = false;
		    	
		    	//BUSCO LA POSICION DE LA LISTA DONDE TENGO QUE DESPLEGAR EL MENU
		    	for(int i=0;i<listView.getChildCount();i++){
		    		
		    		LinearLayout linearLayout = (LinearLayout) listView.getChildAt(i);
			    	LinearLayout linearLayoutFilaNegocio = (LinearLayout) linearLayout.getChildAt(0);
			    	LinearLayout menuAccienesNegocio = (LinearLayout) linearLayoutFilaNegocio.getChildAt(3);
			    	
			    	//Se actualiza la vista de los items 
		    		if(menuAccienesNegocio.getVisibility()==View.VISIBLE){
		    			
		    			menuAccienesNegocio.setVisibility(View.GONE);
		    			linearLayoutFilaNegocio.setBackgroundResource(R.drawable.background_fila);
		    			linearLayoutFilaNegocio.invalidate();
		    			cerroMenu=true;
		    		}
		    	}
		    	if(!cerroMenu){
	    			finish();
	    		}
		    }
		});
       
       //BOTON BUSCAR NEGOCIO
       Button botonBuscarNegocio = (Button) findViewById(R.id.btnBuscarNegocio);
       botonBuscarNegocio.setOnClickListener(new View.OnClickListener() {
		    public void onClick(View view) {
		    	try{
					TextView textBuscarNegocio = (TextView) findViewById(R.id.textBuscarNegocio);
					String negocioBuscado = (String) textBuscarNegocio.getText().toString(); 
			        if(negocioBuscado!=null){
			        	
			        	String whereClause = "nombre like '%"+negocioBuscado+"%' " +
			        			"or descripcion like '%+negocioBuscado+%'";
			        	
			        	SqlLiteHelper sqlLiteHelper = new SqlLiteHelper(Negocios.this);
						SQLiteDatabase db = sqlLiteHelper.getIntance();
						
				        String[] columns = {"_id","nombre","direccion","telefono","horario"};
				        
				        Cursor c = db.query("negocio",columns,whereClause, null, null, null, null, null);
				        startManagingCursor(c);
				        
				        // set this adapter as your ListActivity's adapter
						ListView listView = (ListView) findViewById(R.id.listaNegocios); 
						MyAdapter mListAdapter = new MyAdapter(Negocios.this,c);
						listView.setAdapter(mListAdapter);
						
			        }
		        }catch(Exception e){}
		    }
		});
       
    }// Fin del onCreate
    
    /**
     * Clase que se encarga de llenar la lista de negocios
     * @author plamas
     */
    private class MyAdapter extends ResourceCursorAdapter {

        public MyAdapter(Context context, Cursor cur) {
            super(context, R.layout.listview_fila_negocio, cur);
        }

        @Override
        public View newView(Context context, Cursor cur, ViewGroup parent) {
            LayoutInflater li = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            return li.inflate(R.layout.listview_fila_negocio, parent, false);
        }

        @Override
        public void bindView(View view, Context context, Cursor cur) {
        	
        	TextView tituloRecetaText = (TextView)view.findViewById(R.id.TextTitulo);
        	TextView direccionText = (TextView)view.findViewById(R.id.TextDireccion);
        	TextView descripcionText = (TextView)view.findViewById(R.id.TextDescripcion);
            
            //CARGO EL NOMBRE DEL NEGOCIO
            tituloRecetaText.setText(cur.getString(cur.getColumnIndex("nombre")));
            
            //CARGO LA DIRECCION DEL NEGOCIO
            String direccion = cur.getString(cur.getColumnIndex("direccion"));
            direccionText.setText(direccion);
            
            //ARMO LA DESCIPCION DE ABAJO DEL NEGOCIO
            String descripcion = cur.getString(cur.getColumnIndex("telefono"))+" - "+
            		cur.getString(cur.getColumnIndex("horario"));
            descripcionText.setText(descripcion);
        }
    }

    /**
     * Detecta cuando el usuario preciona una tecla
     */
    @Override
    public boolean onKeyDown (int keyCode, KeyEvent event){
		if(keyCode == KeyEvent.KEYCODE_BACK){ 
			
			String volverIniciando="false";
	        try{
	        	volverIniciando = getIntent().getExtras().getString("categorias");
	        }catch(Exception e){
	        	Intent i = new Intent(Negocios.this,TuDeliveryActivity.class);
		    	startActivity(i);
	        }
	        
	        if(volverIniciando.equalsIgnoreCase("true")){
	        	Intent i = new Intent(Negocios.this,Categorias.class);
		    	startActivity(i);
			}else{
		    	Intent i = new Intent(Negocios.this,TuDeliveryActivity.class);
		    	startActivity(i);
	        }
		} 
		return false;
	}
	
}